启用专有编解码器
预构建的 NW.js 二进制文件中支持的编解码器
由于 NW.js 基于 Chromium,因此媒体组件本质上是相同的。在预构建的 NW.js 中,支持以下编解码器
- theora - vorbis - vp8 & vp9 - pcm_u8, pcm_s16le, pcm_s24le, pcm_f32le, pcm_s16be & pcm_s24be - mp3 (v0.22.1+)
以及这些解复用器
- ogg - matroska - wav
在 NW.js 中启用专有编解码器
许可证和专利费
使用 H.264 编解码器需要您注意专利使用费和源代码的许可证。如果您不了解许可限制和在应用程序中使用专利媒体格式,请咨询律师。有关源代码许可证的更多信息,请查看 此处.
警告
如果您 **没有** 许可证,使用以下提示或转向其他解决方案 **不会** 使您有资格重新分发编解码器。
从社区获取 FFmpeg 二进制文件
在 Chromium 项目的最新版本中,FFmpeg 已更改为内置。因此,您无法再从官方 Chrome 发行版中获取 FFmpeg DLL。但是,您可以从社区获取 预编译的二进制文件。另一种选择是按照以下说明自己构建 FFmpeg。
在不构建 NW.js 的情况下构建 FFmpeg DLL
如果您使用的是预构建的 NW.js,您只需重建 FFmpeg DLL 并替换预构建二进制文件中的捆绑 DLL。与构建整个 NW.js (~20G) 相比,这将节省大量下载时间 (~1G)。
步骤 1. 从 GitHub 下载定制 Chromium 的 zip 包。您可以在 https://github.com/nwjs/chromium.src/tags 中找到相应的版本。将 zip 包解压缩到本地文件夹,例如 ~/nw
。解压缩后的包将包含一个子目录。因此源文件夹位于 ~/nw/<子目录名称>
中。
步骤 2. 获取依赖项
由于您没有构建整个 NW.js,因此您必须手动获取以下依赖项。
- 使用与
DEPS
文件中相同的提交,使用 Git 克隆以下文件夹buildtools
tools/gyp
third_party/yasm/sources/patched-yasm
third_party/ffmpeg
- 通过以下方式下载
buildtools/<os>
中的gn
工具
download_from_google_storage --no_resume \ --platform=<platform> \ --no_auth \ --bucket chromium-gn \ -s buildtools/<os>/<gn-exe>.sha1
<平台>
: Windows 为win32
;Mac 为darwin
;Linux 为linux*
<os>
: Windows 为win
;Mac 为mac
;Linux 为linux64
<gn-exe>
: Windows 为gn.exe
;Mac 和 Linux 为gn
- [Mac 和 Linux] 通过以下方式下载
third_party/llvm-build
中的clang
工具
python tools/clang/scripts/update.py --if-needed
- [Linux] 通过以下方式下载
build/linux/*-sysroot
中的库
python build/linux/sysroot_scripts/install-sysroot.py --running-as-hook
- [Mac] 通过以下方式下载
third_party/libc++-static
中的 libc++-static 库
download_from_google_storage --no_resume \ --platform=darwin \ --no_auth \ --bucket chromium-libcpp \ -s third_party/libc++-static/libc++.a.sha1
针对 Linux 开发人员
在继续执行以下说明之前,请在首次构建 FFmpeg DLL 或 NW.js 时运行 build/install-build-deps.sh
。您只需要运行一次。此脚本将自动为您安装构建依赖项。
步骤 3. 替换 BUILD.gn
将源代码根目录中的 BUILD.gn
替换为以下内容
action("dummy") { deps = [ "//third_party/ffmpeg" ] script = "dummy" outputs = ["$target_gen_dir/dummy.txt"] }
步骤 4. 使用 GN 工具生成 Ninja 文件
cd path/to/nw/source/folder gn gen //out/nw \ --args='is_debug=false is_component_ffmpeg=true target_cpu="<target_cpu>" is_official_build=true ffmpeg_branding="Chrome"'
注意: <目标 CPU>
应设置为 32 位或 64 位构建的 x86
或 x64
。
步骤 4. 构建 ffmpeg DLL
ninja -C out/nw ffmpeg
您将在 out/nw
文件夹中找到 DLL。路径和文件名因平台而异
- Windows:
ffmpeg.dll
- Mac OS X:
libffmpeg.dylib
- Linux:
lib/libffmpeg.so
步骤 5. 将预构建 NW.js 中的捆绑 DLL 替换为您刚刚构建的 DLL。路径和文件名因平台而异
- Windows:
ffmpeg.dll
- Mac OS X:
nwjs.app/Contents/Versions/<chromium-版本>/nwjs Framework.framework/libffmpeg.dylib
- Linux
lib/libffmpeg.so
使用专有编解码器构建整个 NW.js
如果您不使用官方预构建的 NW.js,您可以通过以下说明构建启用专有编解码器的整个 NW.js。有关每个步骤的详细信息,请参阅 构建 NW.js。
步骤 1. 安装先决条件并获取 NW.js 的源代码。请参阅 构建 NW.js 中的先决条件和获取代码部分。
步骤 2. 在配置 GN 时将 ffmpeg_branding
设置为 Chrome
。
步骤 3. 重新生成 ninja 文件。
步骤 4. 重新构建 NW.js。